package dao;

import java.sql.SQLException;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Query;

import pojo.Produto;

public class DaoProduto implements Dao<Produto> {
	
	EntityManager em =null;
	
	public DaoProduto(EntityManager em) {
		super();
		this.em = em;
	}
	
	@Override
	public void gravar(Produto bean) throws SQLException {
		em.getTransaction().begin();
		em.persist(bean);
		em.getTransaction().commit();
		
	}

	@Override
	public Produto buscar(String valor) throws SQLException {
		Query q = em.createQuery("SELECT p FROM Produto p WHERE p.codigo = :id");
		q.setParameter("id", Long.parseLong(valor));
		return (Produto) q.getSingleResult();
	}

	@Override
	public void excluir(Produto p) throws SQLException {
		em.getTransaction().begin();
		p =em.find(p.getClass(), p.getCodigo());
		em.remove(p);
		em.getTransaction().commit();
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<Produto> obterLista(Class<Produto> tipo) throws SQLException {
		Query q = em.createQuery("SELECT p FROM Produto p");
		return q.getResultList();
	}

	@Override
	public void atualizar(Produto entidade) throws SQLException {
		em.getTransaction().begin();
		em.merge(entidade);
		em.getTransaction().commit();	
		
	}

}
